//Copyright 2010 Balazs Keri, Imre Keri
//
//This file is part of FireworksCreator.
//
//FireworksCreator is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//
//FireworksCreator is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with FireworksCreator.  If not, see <http://www.gnu.org/licenses/>.
//
#ifndef MODELDATAOBJECTADAPTERS_H
#define MODELDATAOBJECTADAPTERS_H
//
#include "modeldataobjectadapter.h"
//
class ModelGroupAdapter:public ModelDataObjectAdapter{
public:
   Identified *create_object(QObject* p_parent) const;
   QString get_object_name(const Identified *p_object) const;
   void set_object_name(Identified *p_object,QString p_name) const;
   void insert_into_root(Identified *p_object, model::Root *p_root) const;
   void remove_from_root(Identified *p_object, model::Root *p_root) const;
   void store_object_data(const Identified *p_object, QByteArray &p_bytes) const;
   Identified *restore_object(const QByteArray &p_bytes, const IdDictionary &p_dictionary) const;
   unsigned int get_adapter_type() const;
   QString get_type_name() const;
   QIcon get_type_icon() const;
   QString get_short_name() const;
   ObjectPage *create_page(MainView *p_main_view,QWidget *p_parent) const;
};
//
class ModelShooterAdapter:public ModelDataObjectAdapter{
public:
   Identified *create_object(QObject* p_parent) const;
   QString get_object_name(const Identified *p_object) const;
   void set_object_name(Identified *p_object,QString p_name) const;
   void insert_into_root(Identified *p_object, model::Root *p_root) const;
   void remove_from_root(Identified *p_object, model::Root *p_root) const;
   void store_object_data(const Identified *p_object, QByteArray &p_bytes) const;
   Identified *restore_object(const QByteArray &p_bytes, const IdDictionary &p_dictionary) const;
   unsigned int get_adapter_type() const;
   QString get_type_name() const;
   QIcon get_type_icon() const;
   QString get_short_name() const;
   ObjectPage *create_page(MainView *p_main_view,QWidget *p_parent) const;
};
//
class ModelParticleTemplateAdapter:public ModelDataObjectAdapter{
public:
   Identified *create_object(QObject* p_parent) const;
   QString get_object_name(const Identified *p_object) const;
   void set_object_name(Identified *p_object,QString p_name) const;
   void insert_into_root(Identified *p_object, model::Root *p_root) const;
   void remove_from_root(Identified *p_object, model::Root *p_root) const;
   void store_object_data(const Identified *p_object, QByteArray &p_bytes) const;
   Identified *restore_object(const QByteArray &p_bytes, const IdDictionary &p_dictionary) const;
   unsigned int get_adapter_type() const;
   QString get_type_name() const;
   QIcon get_type_icon() const;
   QString get_short_name() const;
   ObjectPage *create_page(MainView *p_main_view,QWidget *p_parent) const;
};
//
class ModelEmitterTemplateAdapter:public ModelDataObjectAdapter{
public:
   Identified *create_object(QObject* p_parent) const;
   QString get_object_name(const Identified *p_object) const;
   void set_object_name(Identified *p_object,QString p_name) const;
   void insert_into_root(Identified *p_object, model::Root *p_root) const;
   void remove_from_root(Identified *p_object, model::Root *p_root) const;
   void store_object_data(const Identified *p_object, QByteArray &p_bytes) const;
   Identified *restore_object(const QByteArray &p_bytes, const IdDictionary &p_dictionary) const;
   unsigned int get_adapter_type() const;
   QString get_type_name() const;
   QIcon get_type_icon() const;
   QString get_short_name() const;
   ObjectPage *create_page(MainView *p_main_view,QWidget *p_parent) const;
};
//
#endif
